const { merge } = require('webpack-merge');
const common = require('./webpack.common');
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');

module.exports = merge(common, {
  mode: 'production',
  // 集中配置优化选项
  optimization: {
    // 标记导出内容，未使用的导出不会被生成
    usedExports: true,
    // 尽可能将所有模块合并输出到一个函数中
    concatenateModules: true,
    minimize: true,
    // 多入口将第三方公共模块单独打包
    // splitChunks: {
    //   cacheGroups: {
    //     vendor: {
    //       test: /[\\/]node_modules[\\/](vue)[\\/]/,
    //       name: 'vendor',
    //       chunks: 'all',
    //     },
    //   }
    // }
    minimizer: [
      // 在 webpack@5 中，你可以使用 `...` 语法来扩展现有的 minimizer（即 `terser-webpack-plugin`），将下一行取消注释
      // `...`,
      new CssMinimizerPlugin(),
    ],
  },
  plugins: [
    new CopyWebpackPlugin({
      patterns: [{ from: "public/*.ico" }]
    })
  ]
})